wayland: Translate virtual modifiers too
authorRui Matos <tiagomatos@gmail.com>
Tue, 3 Nov 2015 17:39:27 +0000 (18:39 +0100)
committerMatthias Clasen <mclasen@redhat.com>
Sun, 15 Nov 2015 04:26:11 +0000 (23:26 -0500)
Wayland allows us to receive virtual modifiers too so we can just use
them directly if the compositor does send them.

https://bugzilla.gnome.org/show_bug.cgi?id=748904

gdk/wayland/gdkkeys-wayland.c

index a0cc1f6144721420c1ef6974440f946f5b9f440c..4819ab69d5c8fc836d8f50e5fde17a6361ceb0e4 100644 (file)
@@ -264,6 +264,12 @@ get_xkb_modifiers (struct xkb_keymap *xkb_keymap,
     mods |= 1 << xkb_keymap_mod_get_index (xkb_keymap, XKB_MOD_NAME_LOGO);
   if (state & GDK_MOD5_MASK)
     mods |= 1 << xkb_keymap_mod_get_index (xkb_keymap, "Mod5");
+  if (state & GDK_SUPER_MASK)
+    mods |= 1 << xkb_keymap_mod_get_index (xkb_keymap, "Super");
+  if (state & GDK_HYPER_MASK)
+    mods |= 1 << xkb_keymap_mod_get_index (xkb_keymap, "Hyper");
+  if (state & GDK_META_MASK)
+    mods |= 1 << xkb_keymap_mod_get_index (xkb_keymap, "Meta");
 
   return mods;
 }
@@ -290,6 +296,12 @@ get_gdk_modifiers (struct xkb_keymap *xkb_keymap,
     state |= GDK_MOD4_MASK;
   if (mods & (1 << xkb_keymap_mod_get_index (xkb_keymap, "Mod5")))
     state |= GDK_MOD5_MASK;
+  if (mods & (1 << xkb_keymap_mod_get_index (xkb_keymap, "Super")))
+    state |= GDK_SUPER_MASK;
+  if (mods & (1 << xkb_keymap_mod_get_index (xkb_keymap, "Hyper")))
+    state |= GDK_HYPER_MASK;
+  if (mods & (1 << xkb_keymap_mod_get_index (xkb_keymap, "Meta")))
+    state |= GDK_META_MASK;
 
   return state;
 }